<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
        // 有效字符串需满足：
        // 左括号必须用相同类型的右括号闭合。
        // 左括号必须以正确的顺序闭合。
        // 每个右括号都有一个对应的相同类型的左括号。
        // 示例 1：
        // 输入：s = "()"
        // 输出：true
        // 示例 2：
        // 输入：s = "()[]{}"
        // 输出：true
        // 示例 3：
        // 输入：s = "(]"
        // 输出：false

        var isValid = function (s) {
            const n = s.length;
            if (n % 2 === 1) {
                return false;
            }
            const pairs = new Map([
                [')', '('],
                [']', '['],
                ['}', '{']
            ]);
            const stk = [];
            for (let ch of s) {
                if (pairs.has(ch)) {
                    if (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {
                        return false;
                    }
                    stk.pop();
                }
                else {
                    stk.push(ch);
                }
            };
            return !stk.length;
        };
    </script>
</body>

</html>